<?php
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

require_once 'Zend/Form.php';
require_once 'Zend/Form/Element/Select.php';
require_once 'Zend/Form/Element/Text.php';
require_once 'Zend/Form/Element/Button.php';
require_once 'Zend/Form/Element/Submit.php';
require_once 'Zend/Filter/StringTrim.php';

/**
 * Description of AbmLocalidades
 *
 * @author kristian
 */
class Form_NuevaLocalidad extends Zend_Form{
    /*
         *  una lista de localidades
         * cuando se selecciona una muestra los detalles en el panel de al lado
         * si se quiere editar se clickea en el boton editar y el panel de
         * visualizacion se vuelve editable.
         * si se quiere agregar una nueva localidad se la agrega a la lista y se
         * muestra el panel de visualizacion vacio editable.
         */

    public function  __construct($localidad = null) {
        parent::__construct();
        
        // obtiene la lista de provincias
        $provinciasModel = new Spalm_Model_Single_ProvinciaEntity();
        $provincias = $provinciasModel->fetchAll();

        foreach ($provincias as $provinciaActual) {
            $listaProvincias[$provinciaActual->getPK()] = $provinciaActual->getNombre();
        }

        if ($localidad !== null){ // si se quiere editar
            $nombreLocalidad = $localidad->getNombre();
            $cpLocalidad = $localidad->getCodigoPostal();
            $provinciaKey = $localidad->getProvincia()->getPK();
            $submitName = 'Guardar';
        }
        else { // si se quiere crear un nueva localidad
            if (count($listaProvincias) > 0){
                list($proKey,$proName) = each($listaProvincias);
                $provinciaKey = $proKey;
            }
            else {
                $provinciaKey = '';
            }

            $nombreLocalidad = '';
            $cpLocalidad = '';
            $submitName = 'Agregar';
        }


        // crea la pantalla

        $this->setName('Localidades');
        $this->setMethod('post');

        $trim = new Zend_Filter_StringTrim();
        $notHtml = new Zend_Filter_StripTags();
        $notEmpty = new Zend_Validate_NotEmpty();

        $valEmail = new Zend_Validate_EmailAddress();
        $valAlnum = new Zend_Validate_Alnum();
        $valDigits = new Zend_Validate_Digits();

        $valLongitudNB = new Zend_Validate_StringLength();
        $valLongitudNB->setMax(100);
        $valLongitudNB->setMessage('Nombre demasiado largo');

        $valLongitudCP = new Zend_Validate_StringLength();
        $valLongitudCP->setMax(10);
        $valLongitudCP->setMessage('Código postal demasiado largo');

        $valAlnum->setAllowWhiteSpace(true);
        $valAlnum->setMessage('Solo valores alfanumericos');

        $valDigits->setMessage('Solo dígitos');
        $valEmail->setMessage('Por favor corrija el email. Esta mal formado');

        // especifica la lista de localidades
       // $localidades = new Zend_Form_Element_Select('localidades');

        // especifica la entrada de texto del codigo postal
        $codigoPostal = new Zend_Form_Element_Text('codigoPostal');
        $codigoPostal->addFilter($trim);
        $codigoPostal->addFilter($notHtml);
        //$codigoPostal->addValidator('Regex', false, array('[0-9]{4}'));
        $codigoPostal->setRequired(true);
        $codigoPostal->setLabel('Codigo Postal: ');
        $codigoPostal->setValue($cpLocalidad);
        $codigoPostal->setAllowEmpty(false);
        $codigoPostal->addValidator($valLongitudCP);
        $codigoPostal->addValidator($valDigits);
        $codigoPostal->setRequired(true);

        // especifica la entrada de texto del nombre de la localidad
        $nombre = new Zend_Form_Element_Text('nombre');
        //$nombre->setAttrib('readonly', 'false');
        $nombre->addFilter($trim);
        $nombre->addFilter($notHtml);
        $nombre->setLabel('Nombre: ');
        $nombre->setValue($nombreLocalidad);
        $nombre->setAllowEmpty(false);
        $nombre->addValidator($valLongitudNB);
        $nombre->addValidator($valAlnum);
        $nombre->setRequired(true);

        // especifica la lista de provincias
        $provincia = new Zend_Form_Element_Select('provincia');
        $provincia->setLabel('Provincia: ');
        $provincia->setMultiOptions($listaProvincias);
        $provincia->setValue($provinciaKey);
        $provincia->setAllowEmpty(false);
        $provincia->setRequired(true);

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel($submitName);
        $submit->setAttrib('onclick', "return confirm('Por favor, confirme')");

        $reset = new Zend_Form_Element_Reset('reset');
        $reset->setLabel('Reiniciar');

        //$this->addElement($localidades);
        $this->addElement($nombre);
        $this->addElement($codigoPostal);
        $this->addElement($provincia);
        $this->addElement($submit);
        $this->addElement($reset);
        
    }
}
?>
